import * as Url from "@/net/Url";

let socketId = 100
let audio = null
let socketOpen = false

/**
 * 初始化 WebSocket 连接
 */
export function initSocket() {
    if (socketOpen) {
        return;
    }

    // 创建 WebSocket 连接
    uni.connectSocket({
        url: Url.SOCKET_HOST_URL + socketId, // WebSocket 服务器地址
        success: function (res) {
            console.log('WebSocket连接成功:', res);
        },
        fail: function (err) {
            console.error('WebSocket连接失败:', err);
        }
    });

    // 监听打开
    uni.onSocketOpen(function (res) {
        console.log('WebSocket打开:', res);
        socketOpen = true

        // 连接打开后可以发送数据给服务端
        uni.sendSocketMessage({
            data: JSON.stringify({
                message: 'socket from App'
            }),
            success: function () {
                console.log('消息发送至服务端 成功');
                //创建音频
                createAudio()
            },
            fail: function (err) {
                console.error('消息发送至服务端 失败:', err);
            }
        });
    });

    // 监听接收到服务器消息
    uni.onSocketMessage(function (res) {
        console.log('收到服务器消息:', res.data);

        if (audio != null) {
            audio.play();
        }

        // #ifdef APP-PLUS
        if (plus.os.name == 'Android') {
            //创建通知
            plus.push.createMessage('这是消息内容', 'msgId', {
                title: '新的任务',
                extra: {
                    customKey: 'customValue'
                }
            });

            //点击通知
            plus.push.addEventListener('click', function (msg) {
                console.log('用户点击了通知：', msg);
                // uni.navigateTo({
                //     url: '/pages/xxx/xxx'
                // });
            }, false);
        }
        // #endif
    });

    // 监听错误
    uni.onSocketError(function (res) {
        console.error('WebSocket发生错误:', res);
    });

    // 监听关闭
    uni.onSocketClose(function (res) {
        console.log('WebSocket关闭:', res);
        socketOpen = false
        // 5秒后重连
        setTimeout(initSocket, 5_000);
    });
}

/**
 * 关闭 WebSocket 连接
 */
export function closeSocket() {
    uni.closeSocket({
        success: function () {
            console.log('WebSocket已关闭');
            audio = null
            socketOpen = false
        },
        fail: function (err) {
            console.error('关闭WebSocket失败:', err);
        }
    });
}

/**
 * 创建音频
 */
function createAudio() {
    if (audio) {
        try {
            audio.pause();
            audio.destroy()
            audio = null
        } catch (e) {
            console.log("audio err = ", e)
        }
    }

    // 创建音频上下文
    audio = uni.createInnerAudioContext();
    audio.autoplay = true;
    // #ifdef MP-WEIXIN
    audio.obeyMuteSwitch = false; //是否遵循系统静音开关
    // #endif
    audio.src = './static/audio/noticeSound.mp3';//微信小程序不支持本地路径
    audio.pause();
    audio.onPlay(() => {
        console.log('开始播放');
    });
    audio.onError((res) => {
        console.log("audio err = ", res.errMsg);
        console.log("audio  errCode = ", res.errCode);
    });
}